home *** CD-ROM | disk | FTP | other *** search
/ Cre@te Online 2000 December / Cre@teOnline CD05.iso / MacSoft / XML ConsoleMax.sea / XML ConsoleMax / Required / swingall.jar / javax / swing / text / html / parser / DTD.class (.txt) < prev    next >
Encoding:
Java Class File  |  1999-07-15  |  7.1 KB  |  278 lines

  1. package javax.swing.text.html.parser;
  2.  
  3. import java.io.DataInputStream;
  4. import java.io.IOException;
  5. import java.util.BitSet;
  6. import java.util.Hashtable;
  7. import java.util.StringTokenizer;
  8. import java.util.Vector;
  9.  
  10. public class DTD implements DTDConstants {
  11.    public String name;
  12.    public Vector elements = new Vector();
  13.    public Hashtable elementHash = new Hashtable();
  14.    public Hashtable entityHash = new Hashtable();
  15.    public final Element pcdata = this.getElement("#pcdata");
  16.    public final Element html = this.getElement("html");
  17.    public final Element meta = this.getElement("meta");
  18.    public final Element base = this.getElement("base");
  19.    public final Element isindex = this.getElement("isindex");
  20.    public final Element head = this.getElement("head");
  21.    public final Element body = this.getElement("body");
  22.    public final Element applet = this.getElement("applet");
  23.    public final Element param = this.getElement("param");
  24.    // $FF: renamed from: p javax.swing.text.html.parser.Element
  25.    public final Element field_0 = this.getElement("p");
  26.    public final Element title = this.getElement("title");
  27.    final Element style = this.getElement("style");
  28.    final Element link = this.getElement("link");
  29.    public static int FILE_VERSION = 1;
  30.    static Hashtable dtdHash = new Hashtable();
  31.  
  32.    protected DTD(String var1) {
  33.       this.name = var1;
  34.       this.defEntity("#RE", 65536, 13);
  35.       this.defEntity("#RS", 65536, 10);
  36.       this.defEntity("#SPACE", 65536, 32);
  37.       this.defineElement("unknown", 17, false, true, (ContentModel)null, (BitSet)null, (BitSet)null, (AttributeList)null);
  38.    }
  39.  
  40.    protected AttributeList defAttributeList(String var1, int var2, int var3, String var4, String var5, AttributeList var6) {
  41.       Vector var7 = null;
  42.       if (var5 != null) {
  43.          var7 = new Vector();
  44.          StringTokenizer var8 = new StringTokenizer(var5, "|");
  45.  
  46.          while(var8.hasMoreTokens()) {
  47.             String var9 = var8.nextToken();
  48.             if (var9.length() > 0) {
  49.                var7.addElement(var9);
  50.             }
  51.          }
  52.       }
  53.  
  54.       return new AttributeList(var1, var2, var3, var4, var7, var6);
  55.    }
  56.  
  57.    protected ContentModel defContentModel(int var1, Object var2, ContentModel var3) {
  58.       return new ContentModel(var1, var2, var3);
  59.    }
  60.  
  61.    protected Element defElement(String var1, int var2, boolean var3, boolean var4, ContentModel var5, String[] var6, String[] var7, AttributeList var8) {
  62.       BitSet var9 = null;
  63.       if (var6 != null && var6.length > 0) {
  64.          var9 = new BitSet();
  65.  
  66.          for(int var10 = 0; var10 < var6.length; ++var10) {
  67.             String var11 = var6[var10];
  68.             if (var11.length() > 0) {
  69.                var9.set(this.getElement(var11).getIndex());
  70.             }
  71.          }
  72.       }
  73.  
  74.       BitSet var13 = null;
  75.       if (var7 != null && var7.length > 0) {
  76.          var13 = new BitSet();
  77.  
  78.          for(int var14 = 0; var14 < var7.length; ++var14) {
  79.             String var12 = var7[var14];
  80.             if (var12.length() > 0) {
  81.                var13.set(this.getElement(var12).getIndex());
  82.             }
  83.          }
  84.       }
  85.  
  86.       return this.defineElement(var1, var2, var3, var4, var5, var9, var13, var8);
  87.    }
  88.  
  89.    public Entity defEntity(String var1, int var2, int var3) {
  90.       char[] var4 = new char[]{(char)var3};
  91.       return this.defineEntity(var1, var2, var4);
  92.    }
  93.  
  94.    protected Entity defEntity(String var1, int var2, String var3) {
  95.       int var4 = var3.length();
  96.       char[] var5 = new char[var4];
  97.       var3.getChars(0, var4, var5, 0);
  98.       return this.defineEntity(var1, var2, var5);
  99.    }
  100.  
  101.    public void defineAttributes(String var1, AttributeList var2) {
  102.       Element var3 = this.getElement(var1);
  103.       var3.atts = var2;
  104.    }
  105.  
  106.    public Element defineElement(String var1, int var2, boolean var3, boolean var4, ContentModel var5, BitSet var6, BitSet var7, AttributeList var8) {
  107.       Element var9 = this.getElement(var1);
  108.       var9.type = var2;
  109.       var9.oStart = var3;
  110.       var9.oEnd = var4;
  111.       var9.content = var5;
  112.       var9.exclusions = var6;
  113.       var9.inclusions = var7;
  114.       var9.atts = var8;
  115.       return var9;
  116.    }
  117.  
  118.    public Entity defineEntity(String var1, int var2, char[] var3) {
  119.       Entity var4 = (Entity)this.entityHash.get(var1);
  120.       if (var4 == null) {
  121.          var4 = new Entity(var1, var2, var3);
  122.          this.entityHash.put(var1, var4);
  123.          if ((var2 & 65536) != 0 && var3.length == 1) {
  124.             switch (var2 & -65537) {
  125.                case 1:
  126.                case 11:
  127.                   this.entityHash.put(new Integer(var3[0]), var4);
  128.             }
  129.          }
  130.       }
  131.  
  132.       return var4;
  133.    }
  134.  
  135.    boolean elementExists(String var1) {
  136.       Element var2 = (Element)this.elementHash.get(var1);
  137.       return var2 != null;
  138.    }
  139.  
  140.    public static DTD getDTD(String var0) throws IOException {
  141.       var0 = var0.toLowerCase();
  142.       DTD var1 = (DTD)dtdHash.get(var0);
  143.       if (var1 == null) {
  144.          var1 = new DTD(var0);
  145.       }
  146.  
  147.       return var1;
  148.    }
  149.  
  150.    public Element getElement(int var1) {
  151.       return (Element)this.elements.elementAt(var1);
  152.    }
  153.  
  154.    public Element getElement(String var1) {
  155.       Element var2 = (Element)this.elementHash.get(var1);
  156.       if (var2 == null) {
  157.          var2 = new Element(var1, this.elements.size());
  158.          this.elements.addElement(var2);
  159.          this.elementHash.put(var1, var2);
  160.       }
  161.  
  162.       return var2;
  163.    }
  164.  
  165.    public Entity getEntity(int var1) {
  166.       return (Entity)this.entityHash.get(new Integer(var1));
  167.    }
  168.  
  169.    public Entity getEntity(String var1) {
  170.       return (Entity)this.entityHash.get(var1);
  171.    }
  172.  
  173.    public String getName() {
  174.       return this.name;
  175.    }
  176.  
  177.    public static void putDTDHash(String var0, DTD var1) {
  178.       dtdHash.put(var0, var1);
  179.    }
  180.  
  181.    public void read(DataInputStream var1) throws IOException {
  182.       var1.readInt();
  183.       int var10000 = FILE_VERSION;
  184.       String[] var2 = new String[var1.readShort()];
  185.  
  186.       for(int var3 = 0; var3 < var2.length; ++var3) {
  187.          var2[var3] = var1.readUTF();
  188.       }
  189.  
  190.       short var4 = var1.readShort();
  191.  
  192.       for(int var5 = 0; var5 < var4; ++var5) {
  193.          short var6 = var1.readShort();
  194.          byte var7 = var1.readByte();
  195.          String var8 = var1.readUTF();
  196.          this.defEntity(var2[var6], var7 | 65536, var8);
  197.       }
  198.  
  199.       var4 = var1.readShort();
  200.  
  201.       for(int var15 = 0; var15 < var4; ++var15) {
  202.          short var16 = var1.readShort();
  203.          byte var17 = var1.readByte();
  204.          byte var9 = var1.readByte();
  205.          ContentModel var10 = this.readContentModel(var1, var2);
  206.          String[] var11 = this.readNameArray(var1, var2);
  207.          String[] var12 = this.readNameArray(var1, var2);
  208.          AttributeList var13 = this.readAttributeList(var1, var2);
  209.          this.defElement(var2[var16], var17, (var9 & 1) != 0, (var9 & 2) != 0, var10, var11, var12, var13);
  210.       }
  211.  
  212.    }
  213.  
  214.    private AttributeList readAttributeList(DataInputStream var1, String[] var2) throws IOException {
  215.       AttributeList var3 = null;
  216.  
  217.       for(int var4 = var1.readByte(); var4 > 0; --var4) {
  218.          short var5 = var1.readShort();
  219.          byte var6 = var1.readByte();
  220.          byte var7 = var1.readByte();
  221.          short var8 = var1.readShort();
  222.          String var9 = var8 == -1 ? null : var2[var8];
  223.          Vector var10 = null;
  224.          short var11 = var1.readShort();
  225.          if (var11 > 0) {
  226.             var10 = new Vector(var11);
  227.  
  228.             for(int var12 = 0; var12 < var11; ++var12) {
  229.                var10.addElement(var2[var1.readShort()]);
  230.             }
  231.          }
  232.  
  233.          var3 = new AttributeList(var2[var5], var6, var7, var9, var10, var3);
  234.       }
  235.  
  236.       return var3;
  237.    }
  238.  
  239.    private ContentModel readContentModel(DataInputStream var1, String[] var2) throws IOException {
  240.       byte var3 = var1.readByte();
  241.       switch (var3) {
  242.          case 0:
  243.             return null;
  244.          case 1:
  245.             byte var7 = var1.readByte();
  246.             ContentModel var8 = this.readContentModel(var1, var2);
  247.             ContentModel var9 = this.readContentModel(var1, var2);
  248.             return this.defContentModel(var7, var8, var9);
  249.          case 2:
  250.             byte var4 = var1.readByte();
  251.             Element var5 = this.getElement(var2[var1.readShort()]);
  252.             ContentModel var6 = this.readContentModel(var1, var2);
  253.             return this.defContentModel(var4, var5, var6);
  254.          default:
  255.             throw new IOException("bad bdtd");
  256.       }
  257.    }
  258.  
  259.    private String[] readNameArray(DataInputStream var1, String[] var2) throws IOException {
  260.       short var3 = var1.readShort();
  261.       if (var3 == 0) {
  262.          return null;
  263.       } else {
  264.          String[] var4 = new String[var3];
  265.  
  266.          for(int var5 = 0; var5 < var3; ++var5) {
  267.             var4[var5] = var2[var1.readShort()];
  268.          }
  269.  
  270.          return var4;
  271.       }
  272.    }
  273.  
  274.    public String toString() {
  275.       return this.name;
  276.    }
  277. }
  278.